package com.uzai.console.service.wechatwork;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.uzai.console.dto.wechatprivate.wxq.wxgroup.WxGroupUpdateManagePlanDto;
import com.uzai.console.dto.wechatwork.wxq.manageplan.WxqWorkGroupManagePlanQuery;
import com.uzai.console.dto.wechatwork.wxq.rule.WxWorkGroupRuleBatchSetDto;
import com.uzai.console.dto.wechatwork.wxq.rule.WxWorkGroupRuleSetDto;
import com.uzai.console.dto.wechatwork.wxq.rule.WxqWorkGroupRuleFindListDto;
import com.uzai.console.dto.wechatwork.wxq.rule.WxqWorkGroupRuleRefleshDto;
import com.uzai.console.dto.wechatwork.wxq.welcome.*;
import com.uzai.console.dto.wechatwork.wxq.wxgroup.*;
import com.uzai.console.entity.WxqWorkGroupManagerFunc;
import com.uzai.console.entity.WxqWorkGroupRule;
import com.uzai.console.vo.wechatwork.wxq.managerfunc.WxqWorkGroupManagerFuncVo;
import com.uzai.console.vo.wechatwork.wxq.rule.WxWorkGroupRuleVo;
import com.uzai.console.vo.wechatwork.wxq.welcome.WxWorkGroupWelcomeVo;
import com.uzai.console.vo.wechatwork.wxq.wxgroup.WxWorkGroupInfoVo;
import com.uzai.console.vo.wechatwork.wxq.wxgroup.WxWorkGroupQrcodeVo;

import java.util.List;

/**
 * 企业微信群
 * @author liuqi
 * @date 2021年08月13日 11:33
 */
public interface WxWorkGroupService {

    /**
     * 查询微信群列表
     *
     * @param wxWorkGroupQuery
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    Page<WxWorkGroupInfoVo> findWxWorkGroupList(WxWorkGroupQuery wxWorkGroupQuery);


    /**
     * 查询微信群详情
     *
     * @param wxWorkGroupIdDto
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    WxWorkGroupInfoVo findWxWorkGroupInfo(WxWorkGroupIdDto wxWorkGroupIdDto);

    /**
     * 查询微信群列表-根据管理方案id
     *
     * @param wxqWorkGroupManagePlanQuery
     * @return null
     * @author liuqi
     * @date 2021/8/13 11:38
     */
    //Page<WxWorkGroupInfoVo> findWxqWorkGroupManagePlanList(WxqWorkGroupManagePlanQuery wxqWorkGroupManagePlanQuery);

    /**
     * 退群
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param wxWorkGroupIdDto
     * @return null
     */
    void quitWxWorkGroup(WxWorkGroupIdDto wxWorkGroupIdDto);

    /**
     * 单个发送消息
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param wxWorkGroupSendMessageDto
     * @return null
     */
    void sendMessage(WxWorkGroupSendMessageDto wxWorkGroupSendMessageDto);

    /**
     * 设置管理方案
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param wxWorkGroupUpdateManagePlanDto
     * @return null
     */
    void updateManagePlan(WxWorkGroupUpdateManagePlanDto wxWorkGroupUpdateManagePlanDto);


    /**
     * 批量修改管理方案
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param wxWorkGroupBatchUpdateManagePlanDto
     * @return null
     */
    void batchUpdateManagePlan(WxWorkGroupBatchUpdateManagePlanDto wxWorkGroupBatchUpdateManagePlanDto);


    /**
     * 单个刷新群成员
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param wxWorkGroupIdDto
     * @return null
     */
    void refreshGroupMember(WxWorkGroupIdDto wxWorkGroupIdDto);

    /**
     * 修改群昵称
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param wxWorkGroupUpdateNicknameDto
     * @return null
     */
    void updateWxWorkGroupNickName(WxWorkGroupUpdateNicknameDto wxWorkGroupUpdateNicknameDto);

    /**
     * 创建群
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param wxWorkGroupCreateDto
     * @return null
     */
    void createWxWorkGroup(WxWorkGroupCreateDto wxWorkGroupCreateDto);

    /**
     * 邀请入群
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param wxWorkGroupInviteDto
     * @return null
     */
    void inviteWxWorkGroup(WxWorkGroupInviteDto wxWorkGroupInviteDto);

    /**
     * 批量邀请入群
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param wxWorkGroupBatchInviteDto
     * @return null
     */
    void batchInviteWxWorkGroup(WxWorkGroupBatchInviteDto wxWorkGroupBatchInviteDto);

    /**
     * 查询群二维码
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param wxWorkGroupQrcodeDto
     * @return null
     */
    WxWorkGroupQrcodeVo findQrcode(WxWorkGroupQrcodeDto wxWorkGroupQrcodeDto);

    /**
     * 申请群二维码
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param wxWorkGroupQrcodeDto
     * @return null
     */
    void applyQrcode(WxWorkGroupQrcodeDto wxWorkGroupQrcodeDto);


    /**
     * 发送群公告
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param wxWorkGroupSendNoticeDto
     * @return null
     */
    void sendNotice(WxWorkGroupSendNoticeDto wxWorkGroupSendNoticeDto);

    /**
     * 批量发送群公告
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param wxWorkGroupBatchSendNoticeDto
     * @return null
     */
    void batchSendNotice(WxWorkGroupBatchSendNoticeDto wxWorkGroupBatchSendNoticeDto);

    /**
     * 查询群管功能
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param wxWorkGroupIdDto
     * @return null
     */
    WxqWorkGroupManagerFuncVo findManagerFunc(WxWorkGroupIdDto wxWorkGroupIdDto);

    /**
     * 设置群管功能
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param wxWorkGroupSetManagerFuncDto
     * @return null
     */
    void setManagerFunc(WxWorkGroupSetManagerFuncDto wxWorkGroupSetManagerFuncDto);

    /**
     * 批量设置群管功能
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param wxWorkGroupBatchSetManagerFuncDto
     * @return null
     */
    void batchSetManagerFunc(WxWorkGroupBatchSetManagerFuncDto wxWorkGroupBatchSetManagerFuncDto);

    /**
     * 解散本群
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param wxWorkGroupIdDto
     * @return null
     */
    void deleteWxWorkGroup(WxWorkGroupIdDto wxWorkGroupIdDto);

    /**
     * 退出本群
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param wxWorkGroupIdDto
     * @return null
     */
    void quiteWxWorkGroup(WxWorkGroupIdDto wxWorkGroupIdDto);

    /**
     * 刷新成员
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param wxWorkGroupIdDto
     * @return null
     */
    void refreshMember(WxWorkGroupIdDto wxWorkGroupIdDto);

    /**
     * 查询欢迎语
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param wxqWorkGroupWelcomeFindListDto
     * @return null
     */
    List<WxWorkGroupWelcomeVo> findWelcomeList(WxqWorkGroupWelcomeFindListDto wxqWorkGroupWelcomeFindListDto);

    /**
     * 同步欢迎语列表
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param wxqWorkGroupWelcomeRefleshDto
     * @return null
     */
    void refreshWelcome(WxqWorkGroupWelcomeRefleshDto wxqWorkGroupWelcomeRefleshDto);

    /**
     * 设置欢迎语
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param wxWorkGroupWelcomeSetDto
     * @return null
     */
    void setWelcome(WxWorkGroupWelcomeSetDto wxWorkGroupWelcomeSetDto);

    /**
     * 批量设置欢迎语
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param wxWorkGroupWelcomeBatchSetDto
     * @return null
     */
    void batchSetWelcome(WxWorkGroupWelcomeBatchSetDto wxWorkGroupWelcomeBatchSetDto);

    /**
     * 添加欢迎语
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param wxWorkGroupWelcomeSetDto
     * @return null
     */
    void  addWelcome(WxWorkGroupWelcomeAddDto wxWorkGroupWelcomeSetDto);

    /**
     * 批量添加欢迎语
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param wxWorkGroupWelcomeBatchAddDto
     * @return null
     */
    void batchAddWelcome(WxWorkGroupWelcomeBatchAddDto wxWorkGroupWelcomeBatchAddDto);

    /**
     * 查询防骚扰规则列表
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param wxqWorkGroupRuleFindListDto
     * @return null
     */
    List<WxWorkGroupRuleVo> findRuleList(WxqWorkGroupRuleFindListDto wxqWorkGroupRuleFindListDto);

    /**
     * 同步防骚扰规则
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param wxqWorkGroupRuleRefleshDto
     * @return null
     */
    void refreshRule(WxqWorkGroupRuleRefleshDto wxqWorkGroupRuleRefleshDto);

    /**
     * 设置防骚扰规则
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param wxWorkGroupRuleSetDto
     * @return null
     */
    void setRule(WxWorkGroupRuleSetDto wxWorkGroupRuleSetDto);

    /**
     * 批量设置防骚扰规则
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param wxWorkGroupRuleBatchSetDto
     * @return null
     */
    void batchSetRule(WxWorkGroupRuleBatchSetDto wxWorkGroupRuleBatchSetDto);

    /**
     * 企业微信批量踢出群成员
     * @author liuqi
     * @date 2021/8/13 11:38
     * @param batchKickWxWorkGroupMemberDto
     * @return null
     */
    void batchKickWxWorkGroupMember(BatchKickWxWorkGroupMemberDto batchKickWxWorkGroupMemberDto);

    /**
     * 删除单个机器人的微信群
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param merId
     * @return null
     */
    void deleteWxWorkGroupByDeviceUniqueId(Long deviceUniqueId, Long merId);

    /**
     * 修改企业微信群备注
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param wxWorkGroupUpdateRemarkDto
     * @return null
     */
    void updateRemark(WxWorkGroupUpdateRemarkDto wxWorkGroupUpdateRemarkDto);

    void batchAddManager(BatchAddManagerDto batchAddManagerDto);
}
